High Availability (HA) clustering technology is used to improve the availability of an application by continuously monitoring the application's resources and physical server environment, and then invoking recovery procedures when failures occur. In order for such procedures to provide recovery from physical server failures, one or more backup physical servers must be designated as a failover target for each resource that could be affected by a failure. The determination of appropriate failover targets in present-day HA clustering technology is rudimentary, generally limited to ensuring that user-specified resource location, collocation, and anticollocation constraints are met. More advanced failover planning is equipped to fail resources over to the lightest loaded physical server. Other HA clustering systems can equitably distribute the resources across all nodes. In view of the foregoing considerations, there is a need for improved failover systems that distribute failed resources in an optimal manner.